// 基础配置
const BASE_URL = 'https://farm-api.lucklyworld.com'; // 替换为实际的API地址
const TIMEOUT = 10000; // 请求超时时间：10秒

// 获取请求配置
const getRequestConfig = () => {
  const plunderConfig = uni.getStorageSync('plunder_config') || {};
  return {
    token: plunderConfig.token || '',
    uid: plunderConfig.uid || '',
    roleId: plunderConfig.roleId || ''
  };
};

// 请求方法封装
const request = (options) => {
  return new Promise((resolve, reject) => {
    // 获取配置信息
    const config = getRequestConfig();

    // 合并请求头
    const header = {
      'User-Agent': 'com.caike.lomo/4.2.6 (Linux; U; Android 12; zh-cn) (91416; 402060)bbcbce6e97449754',
      'Channel': 'official',
      'ANDROIDID': 'a7b19730952f1068',
      'IMEI': '352746026192015',
      'test-encrypt': '0',
      'Content-Type': 'application/json',
      'token': config.token,
      'uid': config.uid,
      // 'roleId': config.roleId,
      ...options.header
    };

    // 发起请求
    uni.request({
      url: `${BASE_URL}${options.url}`,
      method: options.method || 'GET',
      data: options.data,
      header,
      timeout: TIMEOUT,
      success: (res) => {
        // console.log(options.url + '请求参数', options.data)
        // console.log(options.url + '请求结果', res)
        // 请求成功，但需要判断业务状态码
        if (res.statusCode === 200) {
          // 假设后端返回格式为 { code: 0, data: {}, message: '' }
          if (res.data) return resolve(res.data)

          resolve(res.data);
          // if (res.data.code === 0) {
          //   resolve(res.data.data);
          // } else {
          //   // 业务错误处理
          //   uni.showToast({
          //     title: res.data.message || '请求失败',
          //     icon: 'none'
          //   });
          //   reject(res.data);
          // }
        } else if (res.statusCode === 401) {
          // 未授权，需要重新登录
          uni.showToast({
            title: '登录已过期，请重新登录',
            icon: 'none'
          });
          // 清除登录状态
          uni.removeStorageSync('current_account_id');
          // uni.removeStorageSync('plunder_config');
          // 跳转到登录页
          uni.navigateTo({
            url: '/pages/saoma/saoma'
          });
          reject(res);
        } else {
          // 其他错误
          uni.showToast({
            title: res.data.message,
            icon: 'none'
          });
          reject(res.data);
        }
      },
      fail: (err) => {
        // 网络错误处理
        uni.showToast({
          title: '网络异常，请检查网络连接',
          icon: 'none'
        });
        reject(err);
      }
    });
  });
};

// 封装常用请求方法
const http = {
  get: (url, data = {}, options = {}) => {
    return request({
      url,
      method: 'GET',
      data,
      ...options
    });
  },

  post: (url, data = {}, options = {}) => {
    return request({
      url,
      method: 'POST',
      data,
      ...options
    });
  },

  put: (url, data = {}, options = {}) => {
    return request({
      url,
      method: 'PUT',
      data,
      ...options
    });
  },

  delete: (url, data = {}, options = {}) => {
    return request({
      url,
      method: 'DELETE',
      data,
      ...options
    });
  }
};

// 导出请求方法
export default http;
